package main

import "fmt"

// defer 语句用于在函数返回之前执行某个操作。无论函数是正常返回还是发生了异常，defer 语句中的代码都会被执行。
// defer 语句可以用于释放资源、关闭文件、解锁互斥锁等操作。
func main() {
	get1()
	get2()
}

func get1() {
	fmt.Println("run 1")
	defer fmt.Println("run 2") //不会立即执行，会在函数返回前执行
	fmt.Println("run 3")
}

func get2() {
	defer fmt.Println("aaa") //最后执行
	var i int
	if i == 0 {
		fmt.Println("get2 1")
		return
	}
	defer fmt.Println("bbbb") //不会执行
}
